﻿using System.ServiceModel;
using System;
using System.Collections.Generic;
using BLLBusiness.HeRegistryDatalayer;
namespace BLLBusiness
{
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the interface name "IBLLService" in both code and config file together.
    [ServiceContract]
    public interface IBLLService
    {
        #region Permission Module
        [OperationContract]
        int RegisterUser(RegistrationModel RegistrationModel);

        [OperationContract]
        int RegisterUserTuckShop(TuckShopRegistrationModel RegistrationModel);

        [OperationContract]
        int ConfirmRegistration(string sGUID);

        [OperationContract]
        int RecoverCredentials(RegistrationModel RegistrationModel);

        [OperationContract]
        UserModel AuthonticateUser(String sUsername, String sPassword);

        #endregion

        #region Ministries
        [OperationContract]
        IList<MinistryModel> GetMinistries();

        #endregion 
       
        #region Act And Bills
        [OperationContract]
        String AddActsBills(ActsAndBillsModel Actsandbills);

        [OperationContract]
        String UpdatedActsBills(ActsAndBillsModel Actsandbills);
        [OperationContract]
        IList<ActsAndBillsModel> GetActsbills(ActsAndBillsModel Actsandbills);

        [OperationContract]
        String DeleteActsBills(int iActsAndBillID); 
        #endregion 
    
        #region Bringupfiles
        [OperationContract]
        IList<BringupFilesModel> GetBringupFiles();

        [OperationContract]
        String UpdateBringupFiles(BringupFilesModel Model);

        [OperationContract]
        String AddBringupFiles(BringupFilesModel model);


        [OperationContract]
        IList<BringupFilesModel> GetFilterBringupFiles(String sReference);


        [OperationContract]
        String DeleteBringupFiles(int iFilesID);
        #endregion

        #region Cabinet Authorities
             #region Incomming
        [OperationContract]
        String AddCabinetAuthority(CabinetAuthoritiesModel Model);

        [OperationContract]
        String DeleteIncommingCabinetAuthorities(int iIncomingCabinetID);

        [OperationContract]
        IList<CabinetAuthoritiesModel> GetCabinetAuthoritiesBill(String sTITLE, String sREFERENCENUMBER);
        [OperationContract]
        String UpdateCabinetAuthority(CabinetAuthoritiesModel model);
        #endregion
         
             #region Dispatch Cabinet Authoroties
            [OperationContract]
            String AddDispatchcabinetauthority(DispatchCabinetAuthorityModel Model);
            [OperationContract]
            IList<DispatchCabinetAuthorityModel> GetDispatchcabinetauthority(String sREFERENCENUMBER, String sYear);
            [OperationContract]
            String DeleteDispatchCabinetAuthorities(int CabinetauthorityID); 
            [OperationContract]
            String UpdateDispatchcabinetauthority(DispatchCabinetAuthorityModel Model);
            #endregion 
        #endregion

        #region Classifier
            [OperationContract]
            String AddClassifier(ClassifierModel Model);
            [OperationContract]
            String UpdateClassifier(ClassifierModel Model);
            [OperationContract]
            String DeleteClassifier(ClassifierModel Model);
            #endregion

        #region OutGoging Mail
        [OperationContract]
        String AddOutgoingMail(OutGoingmailModel Model);
        [OperationContract]
        String UpdateOutgoingMail(OutGoingmailModel Model);
        [OperationContract]
        String DeleteOutgoingMail(OutGoingmailModel Model);
        [OperationContract]
        IList<DeliveryModel> GetDeliverytype();
        [OperationContract]
        IList<SignatoriesModel> GetSignatories();
        [OperationContract]
        IList<SectionDepartmentModel> GetSectionDepartment();

        [OperationContract]
        IList<OutGoingmailModel> GetOutgoingmailbyReferencenumber(OutGoingmailModel model);
        [OperationContract]
        IList<OutGoingmailModel> GetOutgoingmailbySubject(OutGoingmailModel model);
        [OperationContract]
        IList<OutGoingmailModel> GetOutgoingmailbyDate(OutGoingmailModel model);

        #endregion

        #region Incomming Mail
        [OperationContract]
        IList<IncommingmailModel> GetIncommingMailbyDateofSubject(IncommingmailModel model);
        [OperationContract]
        IList<IncommingmailModel> GetIncommingMailbyDateofReferencenumber(IncommingmailModel model);
        [OperationContract]
        IList<IncommingmailModel> GetIncommingMailbyDateofPrivateindivisual(IncommingmailModel model);
        [OperationContract]
        IList<IncommingmailModel> GetIncommingMailbyDateofReceipt(IncommingmailModel model);
        [OperationContract]
        IList<IncommingmailModel> GetIncommingMailbyMinistryname(IncommingmailModel model);

        //Crud
        [OperationContract]
        String DeleteIncommingMail(IncommingmailModel Model);
        [OperationContract]
        String AddIncommingMail(IncommingmailModel Model);
        [OperationContract]
        String UpdateIncommingMail(IncommingmailModel Model);


        //Helper Search
        [OperationContract]
        IList<RecepientReceiverModel> GetRecepientReceiver();
        #endregion 

        #region Markout
        [OperationContract]
        String DELETEMarkoutcard(MarkoutModel Model);
        [OperationContract]
        String UpdateMarkoutcard(MarkoutModel Model);
        [OperationContract]
        String AddMarkoutcard(MarkoutModel Model);
        //Search
        [OperationContract]
        IList<MarkoutModel> GetmarkoutbyTakenby(MarkoutModel model);
        [OperationContract]
        IList<MarkoutModel> GetmarkoutbyDateTaken(MarkoutModel model);
        [OperationContract]
        IList<MarkoutModel> GetmarkoutbyFilenumber(MarkoutModel model);
        #endregion

        #region Policy File
        [OperationContract]
        String DeletePolicyFile(PolicyFileModel Model);
        [OperationContract]
        IList<PolicyFileModel> GetPolicybyReference(PolicyFileModel model);
        [OperationContract]
        IList<PolicyFileModel> GetPolicybyTitle(PolicyFileModel model);
        [OperationContract]
        String UpdatePolicyFile(PolicyFileModel Model);
        [OperationContract]
        String AddPolicyFile(PolicyFileModel Model);

        #endregion 

        #region Memo
        [OperationContract]
        IList<MemoModel> GetMemobySubject(MemoModel model);
        [OperationContract]
        IList<MemoModel> GetMemobyReferencenumber(MemoModel model);
        [OperationContract]
        IList<MemoModel> GetMemobySectionDepartment(MemoModel model);
        [OperationContract]
        String DeleteMemo(MemoModel Model);
        [OperationContract]
        String UpdateMemo(MemoModel Model);
        [OperationContract]
        String AddMemo(MemoModel Model);
        #endregion

        #region stations
        [OperationContract]
        IList<StationsModel> GetStation();
        #endregion

        #region Post
        [OperationContract]
        IList<PostModel> GetPostList();
        [OperationContract]
        IList<PostModel> GetJobtitlecurrent();
        #endregion

        #region Title Status Model
        [OperationContract]
        IList<TitleStatusModel> GetJobtitlestatus();
        #endregion

        #region File
        [OperationContract]
        String UpdateFile(FileModel Model);
        [OperationContract]
        String DeleteFile(FileModel Model);
        [OperationContract]
        String AddFile(FileModel Model);

        //search
        [OperationContract]
        IList<FileModel> GetFilebyEcnumber(FileModel model);
        [OperationContract]
        IList<FileModel> GetFilebyTITLE(FileModel model);
        [OperationContract]
        IList<FileModel> GetFilebyReferencenumber(FileModel model);
        #endregion

        #region Fileindex
        [OperationContract]
        IList<FileindexModel> GetFileindexbyReferencenumber(FileindexModel model);

        [OperationContract]
        IList<FileindexModel> GetFileindexbyTitle(FileindexModel model);
        
        [OperationContract]
        String DeleteFileindex(FileindexModel Model);
        [OperationContract]
        String UpdateFileindex(FileindexModel Model);
        [OperationContract]
        String AddFileindex(FileindexModel Model);
        #endregion

        #region Defence official
        [OperationContract]
        IList<DefenceMinutesModel> GetPurposeofApproval();
        [OperationContract]
        IList<DefenceMinutesModel> GetDefenceminutesnumber();
        [OperationContract]
        string DeleteDefenceMinutes(DefenceMinutesModel Model);
        [OperationContract]
        string UpateDefenceMinutes(DefenceMinutesModel Model);
        [OperationContract]
        string AddDefenceMinutes(DefenceMinutesModel Model);
        [OperationContract]
        string AddDefenceofficials(DefenceMinutesModel Model);
        [OperationContract]
        string UpdateDefenceofficials(DefenceMinutesModel Model);
        [OperationContract]
        string DeleteDefenceofficials(DefenceMinutesModel Model);
        [OperationContract]
        string AddDefenceDispatch(DispatchMunutesModel Model);
        [OperationContract]
        string UpdateDefenceDispatch(DispatchMunutesModel Model);
        [OperationContract]
        string DeleteDefenceDispatch(DispatchMunutesModel Model);

        [OperationContract]
        IList<DispatchMunutesModel> GetDefenceMinutesDispatch(DispatchMunutesModel model);

        [OperationContract]
        IList<DefenceMinutesModel> GetminutesOfficialsname(DefenceMinutesModel model);
        #endregion


        [OperationContract]
        IList<SchoolModel> GetSchoolsDataExtedend(int Userid);

    }
}
